package com.library;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.XmlWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

public class JettyWithSpringMain {

    public static void main(String[] args) throws Exception {
        Server server = new Server(8080); // 设置Jetty服务器端口号

        // 设置Web应用上下文
        WebAppContext context = new WebAppContext();
        context.setContextPath("/");
        context.setResourceBase("src/main/webapp"); // 设置webapp资源目录，根据实际情况修改

        // 配置Jetty以支持JSP
        context.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*/classes/.*");
        context.setAttribute("org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern", ".*/classes/.*");

        // 配置Spring的上下文
        XmlWebApplicationContext webApplicationContext = new XmlWebApplicationContext();
//        webApplicationContext.setConfigLocation("classpath:applicationContext.xml");
        webApplicationContext.setConfigLocation("classpath:book-context.xml");

        // 添加Spring的ContextLoaderListener到Jetty的WebAppContext
        context.addEventListener(new ContextLoaderListener(webApplicationContext));

        // 配置Spring的DispatcherServlet
        DispatcherServlet dispatcherServlet = new DispatcherServlet(webApplicationContext);
        org.eclipse.jetty.servlet.ServletHolder servletHolder = new org.eclipse.jetty.servlet.ServletHolder(dispatcherServlet);
        context.addServlet(servletHolder, "/"); // 映射DispatcherServlet到根路径

        server.setHandler(context);

        server.start();
        server.join();
    }

}
